home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 23 / CU Amiga - Super CD-ROM 23 (June 1998).iso / CreatingGames / Utilities / C / BoulderEngine / source / BOULDER3.C < prev    next >
Encoding:
Text File  |  1998-03-30  |  3.0 KB  |  133 lines

  1. /* ==================================================
  2.    =  Cia turi buti JOYSTICK'o proceduros  +        =
  3.    =  Advanced topics.                              =
  4.    =  FILE BOULDER3.C pradetas 1993.12.21           =
  5.    =  ©bySAVELSOFT                +1995             =
  6.    ================================================== */
  7. SHORT hx,hy;
  8. USHORT LIVES,ITEMS,BONUS,ALIVE,FINISH;
  9. ULONG SCORE;
  10. SHORT pekb(),pekc(),fire();
  11. short man2()
  12. {
  13. SHORT a,b;
  14. a=pekc();
  15. b=0; hx=0; hy=0;
  16. if(a==3) {b=1; hx=1; }
  17. if(a==12) {b=1; hx=-1; return(b);}
  18. if(a==4) {b=1; hy=-1; }
  19. if(a==1) {b=1; hy=1; }
  20. return(b);
  21. }
  22. man(mx,my)
  23. SHORT mx,my;
  24. {
  25. SHORT i,q,x,y;
  26. i=man2(); if(!i){ return(); }
  27. x=mx+hx; y=my+hy;
  28. korekcija(x,my,hy);
  29. q=e(x,y); if(q==12){FINISH=1; q=1;}
  30. if(!fire()) {
  31.  if(q==20) { LIVES++; q=1; }
  32.  if(q<2 && !hy) {walk(mx,my,hx); return(); }
  33.  if(q==3 && !hy) {walk(mx,my,hx); SCORE+=BONUS; Adzin=1;
  34.     if(ITEMS){ITEMS--; }
  35.     return(); }
  36.  if(q<2) {set(mx,my,0); set(x,y,10); if(hy==-1){k(x,y)=9; ALIVE=16;} return(); }
  37.  if(q==3) {set(mx,my,0); set(x,y,10); if(hy==-1){k(x,y)=9; ALIVE=16;}
  38.   SCORE+=BONUS; Adzin=1;
  39.   if(ITEMS){ITEMS--;} return(); }
  40.  if((q==2 || q==14) && !e(mx+2*hx,my)) {set(mx,my,0); set(x,y,10);set(mx+2*hx,my,q);
  41.    k(x,y)=9; ALIVE=19;
  42.    return(); }
  43. }
  44. if(fire())
  45. {
  46. if(q==3) {set(x,y,0); SCORE+=BONUS; Adzin=1; if(ITEMS) {ITEMS--;} return(); }
  47. if(q==1) {set(x,y,0); return(); }
  48. if(q==20) {set(x,y,0); LIVES++; Adzin=1; return(); }
  49. if((q==2 || q==14) && !e(mx+2*hx,my)) {set(x,y,0); set(mx+2*hx,my,q);
  50.    if(hx==1){k(mx+2,my)=9;} return();
  51.  }
  52. }
  53.  
  54.  
  55. }
  56. korekcija(x,y,hy)
  57. SHORT x,y,hy;
  58. {
  59.  if(hy==-1){
  60.             if(y==8){scrolll(0);}
  61.             if(y==16) {scrolll(128);}
  62.             return;
  63.            }
  64.  if(hy==1) {
  65.             if(y==10) {scrolll(128);}
  66.             if(y==18) {scrolll(256);}
  67.            }
  68. }
  69. scrolll(ny)
  70. SHORT ny;
  71. {
  72. SHORT i;
  73. if(vyoff<ny){for(i=vyoff;i<ny;i=i+4){Tekstscreen(vxoff,i);}
  74.    vyoff=ny; return; }
  75. if(vyoff>ny){for(i=vyoff;i>ny;i=i-4){Tekstscreen(vxoff,i);}
  76.    vyoff=ny; Tekstscreen(vxoff,vyoff);}
  77. }
  78. walk(x,y,dx)
  79. SHORT x,y,dx;
  80. {
  81. set(x,y,0);
  82. set(x+dx,y,10); if(dx==1) { k(x+dx,y)=9; }
  83. }
  84.  
  85. SHORT fire()
  86. { short a;
  87. a=pekb(0xBFE000);
  88. if(a>127) {return(0);}
  89. return(1);
  90. }
  91. mgo(k,x,y,c1,c2,c3,c4)        /* Tai perkeltos Magmos proc. */
  92. SHORT k,x,y,c1,c2,c3,c4;
  93. {
  94.  if(k==1) {set(c1,y,6); k(c1,y)=9; }
  95.  if(k==2) {set(x,c3,6); k(x,c3)=9; }
  96.  if(k==3) {set(c2,y,6); }
  97.  if(k==4) {set(x,c4,6); }
  98. }
  99. go(c1,c2,c3,c4,kq,q,x,y)
  100. SHORT c1,c2,c3,c4,kq,q,x,y;
  101. {
  102. set(x,y,0);
  103. if(kq==1) {set(c1,y,q); k(c1,y)=20; return(); }
  104. if(kq==2) {set(x,c3,q); k(x,c3)=30; }
  105. if(kq==3) {set(c2,y,q); k(c2,y)=4; }
  106. if(kq==4) {set(x,c4,q); k(x,c4)=5; }
  107. }
  108.   /* Dievuleliau, Levas moka M68000 asembleri! */
  109. #asm
  110.    section code
  111.    xdef _pekb
  112. _pekb
  113.    move.l 4(sp),d0
  114.    movem.l a0,-(sp)
  115.    move.l d0,a0
  116.    move.l (a0),d0
  117.    andi.l #$ff,d0
  118.    movem.l (sp)+,a0
  119.    rts
  120.    xdef _pekc
  121. _pekc
  122.    movem.l d1,-(sp)
  123.    move.w ($DFF00C),d0
  124.    andi.l #$300,d0
  125.    divu.w #64,d0
  126.    move.w ($DFF00C),d1
  127.    andi.l #$003,d1
  128.    or.l d1,d0
  129.    movem.l (sp)+,d1
  130.    rts
  131. #endasm
  132.  
  133.